package cz.vse.adventura.po1715.xburj54_bursa;

import cz.pecinovsky.english.pojj.adv_framework.game_gui.IGameG;
//import cz.vse.adventura.po1715.xburj54_bursa.hra.HraLupič;
import cz.pecinovsky.english.pojj.adv_framework.game_txt.IGame;

import cz.pecinovsky.english.pojj.adv_framework.scenario.TypeOfScenario;
import cz.pecinovsky.english.pojj.adv_framework.scenario.ScenarioStep;
import cz.pecinovsky.english.pojj.adv_framework.scenario.AScenarioManager;

//import cz.pecinovsky.english.pojj.adv_framework.test_util.ScenarioStart;
//import cz.pecinovsky.english.pojj.adv_framework.test_util.ScenarioManagerTest;
//import cz.pecinovsky.english.pojj.adv_framework.test_util._SpouštěníScénářů;
//import cz.pecinovsky.english.pojj.adv_framework.test_util._TestSprávceScénářů;
import cz.pecinovsky.english.pojj.adv_framework.test_util._Test_101;
import cz.pecinovsky.english.pojj.adv_framework.test_util._Test_115;
import cz.vse.adventura.po1715.xburj54_bursa.hra.HraLupič;

import static  cz.pecinovsky.english.pojj.adv_framework.scenario.TypeOfStep.*;

/*******************************************************************************
 * Instance třída {@code SprávceScénářůL} slouží jako správce scénářů,
 * které mají prověřit a/nebo demonstrovat správnou funkci plánované hry.
 * Jednotlive scénáře jsou iterovatelné posloupností kroků specifikovaných
 * instancemi třídy <code>KrokScénáře</code> z rámce, do nějž se hra začleňuje.
 * <p>
 * Správce scénářů je jedináček, který má na starosti všechny scénáře
 * týkající se s ním sdružené hry.
 *
 * @author Jan Bursa
 * @version 1.02,  22.11.2010
 */
public class SprávceScénářůL extends AScenarioManager
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================

    /** Třída, jejíž instance jsou zde spravovány. */
    private final static Class<? extends IGame> TŘÍDA = HraLupič.class;

    /** Jmeno autora třídy. */
    public static final String autor = "BURSA Jan";

    /** X-name autora třídy. */
    public static final String xname = "XBURJ54";

    /***************************************************************************
     * Konstruktor plnohodnotné instance třídy {@link KrokScénáře}
     * vyžaduje následující parametry:
     *      String   příkaz;    //Příkaz realizující tetno krok scénáře
     *      String   zpráva;    //Zpráva vypsaná po zadání příkazu
     *      String   prostor;   //Prostor, v něž skončí hráč po zadání příkazu
     *      String[] východy;   //Aktuální východy z aktuálního prostoru
     *      String[] objekty;   //Objekty vyskytující se v daném prostoru
     *      String[] batoh;     //Aktuální obsah batohu
     *      TypKroku typTestu;  //Typ daného kroku testu
     */

    /***************************************************************************
     * Základní scénář popisující možný úspěšný průběh hry.
     */
     private static final ScenarioStep[] základní =
    {
/*1*/       new ScenarioStep( "", //Název prvního příkazu musí být prázdný řetězec
             "Vítejte ve hře. Projděte celým domem a odneste si ten nejcennější suvenýr" +
          "\n Najděte v bytě trezor. Zde se vždy nachází nějaká cennost." +
        "\n\n Nyní se nacházíte na: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsSTART ),

/*2*/       new ScenarioStep( "jdi Garáž",
             "Přesunul(a) jste se do místnosti: Garáž" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do: Zahrada" +
          "\n V garáži se nachází: Noviny, Kleště, Šroubovák, Vrtačka" +
          "\n Máte v držení předměty:",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Kleště", "Šroubovák", "Vrtačka"},
            new String[] {},
            tsMOVE ),

/*3*/       new ScenarioStep( "vezmi Kleště",
             "Vzal(a) jste předmět: Kleště" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Noviny, Šroubovák, Vrtačka" +
          "\n Máte v držení předměty: Kleště",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Šroubovák", "Vrtačka"},
            new String[] { "Kleště" },
            tsPICK_UP ),

/*4*/       new ScenarioStep( "vezmi Šroubovák",
             "Vzal(a) jste předmět: Šroubovák" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Noviny, Vrtačka" +
          "\n Máte v držení předměty: Kleště, Šroubovák",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Vrtačka"},
            new String[] { "Kleště", "Šroubovák" },
            tsPICK_UP ),

/*5*/       new ScenarioStep( "jdi Zahrada",
             "Přesunul(a) jste se do místnosti: Zahrada" +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do místností: Garáž, Vchod " +
          "\n V místnosti se nachází: Květiny, Plot" +
          "\n Máte v držení předměty: Kleště, Šroubovák",

            "Zahrada",
            new String[] { "Garáž", "Vchod" },
            new String[] { "Květiny", "Plot" },
            new String[] { "Kleště", "Šroubovák"},
            tsMOVE ),

/*6*/       new ScenarioStep( "použij Kleště Plot",
             "Rozhodl(a) jste se použít předmět Kleště na předmět Plot." +
          "\n Uštípl(a) jste kus drátu z plotu." +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do místností: Garáž, Vchod " +
          "\n V místnosti se nachází: Květiny, Plot, Drát" +
          "\n Máte v držení předměty: Kleště, Šroubovák",

            "Zahrada",
            new String[] { "Garáž", "Vchod" },
            new String[] { "Květiny", "Plot", "Drát" },
            new String[] { "Kleště", "Šroubovák" },
            tsNON_STANDARD ),

/*7*/       new ScenarioStep( "vezmi Drát",
             "Vzal(a) jste předmět: Drát" +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do místností: Garáž, Vchod " +
          "\n V místnosti se nachází: Květiny, Plot " +
          "\n Máte v držení předměty: Kleště, Šroubovák, Drát ",

            "Zahrada",
            new String[] { "Garáž", "Vchod" },
            new String[] { "Květiny", "Plot" },
            new String[] { "Kleště", "Šroubovák", "Drát" },
            tsPICK_UP ),

/*8*/       new ScenarioStep( "jdi Vchod",
             "Přesunul(a) jste se do místnosti: Vchod" +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada, Předsíň" +
          "\n V místnosti se nachází: Rohožka, Dveře" +
          "\n Máte v držení předměty: Kleště, Šroubovák, Drát ",

            "Vchod",
            new String[] { "Zahrada"  },
            new String[] { "Rohožka", "Dveře" },
            new String[] { "Kleště", "Šroubovák", "Drát" },
            tsMOVE ),

/*9*/      new ScenarioStep( "odsuň Rohožka",
             "Odsunul(a) jste předmět: Rohožka" +
          "\n Pod rohožkou byl schovaný klíč" +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada" +
          "\n V místnosti se nachází: Rohožka, Klíč, Dveře" +
          "\n Máte v držení předměty: Kleště, Šroubovák, Drát ",

            "Vchod",
            new String[] { "Zahrada"  },
            new String[] { "Rohožka", "Klíč", "Dveře" },
            new String[] { "Kleště", "Šroubovák", "Drát" },
            tsNON_STANDARD ),

/*10*/      new ScenarioStep( "vezmi Klíč",
             "Zadaný předmět nelze zvednout - máte sice velké kapsy, ale tohle už se tam opravdu nevejde" +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada" +
          "\n V místnosti se nachází: Rohožka, Dveře, Klíč " +
          "\n Máte v držení předměty: Kleště, Šroubovák, Drát",

            "Vchod",
            new String[] { "Zahrada"  },
            new String[] { "Rohožka", "Dveře", "Klíč" },
            new String[] { "Kleště", "Šroubovák", "Drát" },
            tsBAG_FULL ),

/*11*/      new ScenarioStep( "polož Kleště",
             "Položil(a) jste předmět: Kleště" +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada" +
          "\n V místnosti se nachází: Rohožka, Dveře, Kleště, Klíč " +
          "\n Máte v držení předměty: Šroubovák, Drát",

            "Vchod",
            new String[] { "Zahrada"  },
            new String[] { "Rohožka", "Dveře", "Kleště", "Klíč" },
            new String[] { "Šroubovák", "Drát" },
            tsPUT_DOWN ),

/*12*/      new ScenarioStep( "vezmi Klíč",
             "Vzal(a) jste předmět: Klíč" +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada" +
          "\n V místnosti se nachází: Rohožka, Dveře, Kleště" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíč ",

            "Vchod",
            new String[] { "Zahrada"  },
            new String[] { "Rohožka", "Dveře", "Kleště" },
            new String[] { "Šroubovák", "Drát", "Klíč" },
            tsPICK_UP ),

/*13*/      new ScenarioStep( "použij Klíč Dveře",
             "Rozhodl(a) jste se použít předmět Klíč na předmět Dveře." +
          "\n Odemkl(a) jste dveře do předsíně." +
        "\n\n Nacházíte se v místnosti: Vchod" +
          "\n Můžete se přesunout do místností: Zahrada, Předsíň" +
          "\n V místnosti se nachází: Rohožka, Dveře, Kleště" +
          "\n Máte v držení předměty: Šroubovák, Drát",

            "Vchod",
            new String[] { "Zahrada", "Předsíň"  },
            new String[] { "Rohožka", "Dveře", "Kleště", "Klíč" },
            new String[] { "Šroubovák", "Drát" },
            tsNON_STANDARD ),

/*14*/      new ScenarioStep( "jdi Předsíň",
             "Přesunul(a) jste se do místnosti: Předsíň" +
        "\n\n Nacházíte se v místnosti: Předsíň" +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda" +
          "\n Máte v držení předměty: Šroubovák, Drát ",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda" },
            new String[] { "Šroubovák", "Drát" },
            tsMOVE ),

/*15*/      new ScenarioStep( "prozkoumej Bunda",
          "\n Prozkoumal(a) jste bundu. Z bundy vypadl Klíček" +
        "\n\n Nacházíte se v místnosti: Předsíň " +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda, Klíček" +
          "\n Máte v držení předměty: Šroubovák, Drát ",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda", "Klíček" },
            new String[] { "Šroubovák", "Drát" },
            tsNON_STANDARD ),

/*16*/      new ScenarioStep( "vezmi Klíček",
             "Vzal(a) jste předmět: Klíček" +
        "\n\n Nacházíte se v místnosti: Předsíň " +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček ",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsPICK_UP ),

/*17*/      new ScenarioStep( "jdi Koupelna",
             "Přesunul(a) jste se do místnosti: Koupelna" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsMOVE ),

/*18*/      new ScenarioStep( "prozkoumej Umyvadlo",
          "\n Prozkoumal(a) jsi umyvadlo. V odpadu umyvadla se něco leskne" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsNON_STANDARD ),

/*19*/      new ScenarioStep( "použij Šroubovák Umyvadlo",
             "Rozhodl(a) jste se použít předmět Šroubovák na předmět Umyvadlo." +
          "\n Odšrouboval(a) jste kryt odpadu umyvadla. Uvnitř je malý kamínek." +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsNON_STANDARD ),

/*20*/      new ScenarioStep( "vezmi Kamínek",
             "Rukou kamínek jen tak nevyndáte." +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsUNMOVABLE ),

/*21*/      new ScenarioStep( "jdi Předsíň",
             "Přesunul(a) jste se do místnosti: Předsíň" +
        "\n\n Nacházíte se v místnosti: Předsíň" +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsMOVE ),

/*22*/     new ScenarioStep( "jdi Kuchyň",
             "Přesunul(a) jste se do místnosti: Kuchyň" +
        "\n\n Nacházíte se v místnosti: Kuchyň" +
          "\n Můžete se přesunout do místností: Předsíň, Obývák" +
          "\n V místnosti se nachází: Nádobí, Lednička, Lžička" +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček ",

            "Kuchyň",
            new String[] { "Předsíň", "Obývák" },
            new String[] { "Nádobí", "Lednička", "Lžička" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsMOVE ),

/*23*/      new ScenarioStep( "vezmi Lžička",
             "Zadaný předmět nelze zvednout - máte sice velké kapsy, ale tohle už se tam opravdu nevejde" +
        "\n\n Nacházíte se v místnosti: Kuchyň" +
          "\n Můžete se přesunout do místností: Předsíň, Obývák" +
          "\n V místnosti se nachází: Nádobí, Lednička, Lžička " +
          "\n Máte v držení předměty: Šroubovák, Drát, Klíček",

            "Kuchyň",
            new String[] { "Předsíň", "Obývák" },
            new String[] { "Nádobí", "Lednička", "Lžička" },
            new String[] { "Šroubovák", "Drát", "Klíček" },
            tsBAG_FULL ),

/*24*/      new ScenarioStep( "polož Šroubovák",
             "Položil(a) jste předmět: Šroubovák" +
        "\n\n Nacházíte se v místnosti: Kuchyň" +
          "\n Můžete se přesunout do místností: Předsíň, Obývák" +
          "\n V místnosti se nachází: Nádobí, Lednička, Lžička, Šroubovák " +
          "\n Máte v držení předměty: Drát, Klíček",

            "Kuchyň",
            new String[] { "Předsíň", "Obývák" },
            new String[] { "Nádobí", "Lednička", "Lžička", "Šroubovák" },
            new String[] { "Drát", "Klíček" },
            tsPUT_DOWN ),

/*25*/      new ScenarioStep( "vezmi Lžička",
             "Vzal(a) jste předmět: Lžička" +
        "\n\n Nacházíte se v místnosti: Kuchyň" +
          "\n Můžete se přesunout do místností: Předsíň, Obývák" +
          "\n V místnosti se nachází: Nádobí, Lednička, Šroubovák" +
          "\n Máte v držení předměty: Drát, Klíček, Lžička ",

            "Kuchyň",
            new String[] { "Předsíň", "Obývák" },
            new String[] { "Nádobí", "Lednička", "Šroubovák" },
            new String[] { "Drát", "Klíček", "Lžička" },
            tsPICK_UP ),

/*26*/      new ScenarioStep( "jdi Předsíň",
             "Přesunul(a) jste se do místnosti: Předsíň" +
        "\n\n Nacházíte se v místnosti: Předsíň" +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda" +
          "\n Máte v držení předměty: Drát, Klíček, Lžička ",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda" },
            new String[] { "Drát", "Klíček", "Lžička" },
            tsMOVE ),

/*27*/      new ScenarioStep( "jdi Koupelna",
             "Přesunul(a) jste se do místnosti: Koupelna" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek" +
          "\n Máte v držení předměty: Drát, Klíček, Lžička ",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek" },
            new String[] { "Drát", "Klíček", "Lžička" },
            tsMOVE ),

/*28*/      new ScenarioStep( "použij Lžička Kamínek",
             "Rozhodl(a) jste se použít předmět Lžička na předmět Kamínek." +
          "\n Lžičkou jste vyšťouchl(a) kamínek z odpadu umyvadla. Kamínek spadl na zem." +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek" +
          "\n Máte v držení předměty: Drát, Klíček, Lžička ",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek" },
            new String[] { "Drát", "Klíček", "Lžička" },
            tsNON_STANDARD ),

/*29*/      new ScenarioStep( "vezmi Kamínek",
             "Zadaný předmět nelze zvednout - máte sice velké kapsy, ale tohle už se tam opravdu nevejde" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek" +
          "\n Máte v držení předměty: Drát, Klíček, Lžička ",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek" },
            new String[] { "Drát", "Klíček", "Lžička" },
            tsBAG_FULL ),

/*30*/      new ScenarioStep( "polož Lžička",
             "Položil(a) jste předmět: Lžička" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Kamínek, Lžička" +
          "\n Máte v držení předměty: Drát, Klíček",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Kamínek", "Lžička" },
            new String[] { "Drát", "Klíček" },
            tsPUT_DOWN ),

/*31*/      new ScenarioStep( "vezmi Kamínek",
             "Vzal(a) jste předmět: Kamínek" +
        "\n\n Nacházíte se v místnosti: Koupelna" +
          "\n Můžete se přesunout do místností: Předsíň" +
          "\n V místnosti se nachází: Umyvadlo, Vana, Zrcadlo, Lžička" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Koupelna",
            new String[] { "Předsíň" },
            new String[] { "Umyvadlo", "Vana", "Zrcadlo", "Lžička" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsPICK_UP ),
        
/*32*/      new ScenarioStep( "jdi Předsíň",
             "Přesunul(a) jste se do místnosti: Předsíň" +
        "\n\n Nacházíte se v místnosti: Předsíň" +
          "\n Můžete se přesunout do místností: Vchod, Koupelna, Kuchyň" +
          "\n V místnosti se nachází: Botník, Bunda" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Předsíň",
            new String[] { "Vchod", "Koupelna", "Kuchyň" },
            new String[] { "Botník", "Bunda" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsMOVE ),
            
/*33*/      new ScenarioStep( "jdi Kuchyň",
             "Přesunul(a) jste se do místnosti: Kuchyň" +
        "\n\n Nacházíte se v místnosti: Kuchyň" +
          "\n Můžete se přesunout do místností: Předsíň, Obývák" +
          "\n V místnosti se nachází: Nádobí, Lednička, Šroubovák" +
          "\n Máte v držení předměty: Kleště, Šroubovák, Drát, Klíček, Lžička, Kamínek ",

            "Kuchyň",
            new String[] { "Předsíň", "Obývák" },
            new String[] { "Nádobí", "Lednička", "Šroubovák" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsMOVE ),
            
/*34*/      new ScenarioStep( "jdi Obývák",
             "Přesunul(a) jste se do místnosti: Obývák" +
        "\n\n Nacházíte se v místnosti: Obývák" +
          "\n Můžete se přesunout do místností: Kuchyň, Pracovna" +
          "\n V místnosti se nachází: Krb, Televize, Stolek, Propiska, Sešit" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Obývák",
            new String[] { "Kuchyň", "Pracovna" },
            new String[] { "Krb", "Televize", "Stolek", "Propiska", "Sešit" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsMOVE ),

/*35*/      new ScenarioStep( "jdi Pracovna",
             "Přesunul(a) jste se do místnosti: Pracovna" +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsMOVE ),

/*36*/      new ScenarioStep( "sundej Obraz",
             "Sundal(a) jste předmět Obraz" +
          "\n Pod obrazem byl ukryt trezor" +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsNON_STANDARD ),

/*37*/      new ScenarioStep( "prozkoumej Trezor",
          "\n Prozkoumal(a) jsi trezor. Je zde klíčová dírka a malý otvor." +
          "\n Bohužel zde chybí klička na otevírání. Jsou tu pouze 2 dirky od šroubků." +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: Drát, Klíček, Kamínek ",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] { "Drát", "Klíček", "Kamínek" },
            tsNON_STANDARD ),

/*38*/      new ScenarioStep( "použij Kamínek Trezor",
             "Rozhodl(a) jste se použít předmět Kamínek na předmět Trezor." +
          "\n Kamínek zapadl do otvoru v trezoru." +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: Drát, Klíček",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] { "Drát", "Klíček" },
            tsNON_STANDARD ),

/*39*/      new ScenarioStep( "použij Klíček Trezor",
             "Rozhodl(a) jste se použít předmět Klíček na předmět Trezor." +
          "\n Otočil(a) jste klíčkem. Tím jste dostal kamínek na potřebné místo a trezor klapl." +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: Drát",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] { "Drát" },
            tsNON_STANDARD ),

/*40*/      new ScenarioStep( "použij Drát Trezor",
             "Rozhodl(a) jste se použít předmět Drát na předmět Trezor." +
          "\n Z drátu jste vyrobil(a) kličku a zastčil ji do dírek od šroubů." +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: ",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] {  },
            tsNON_STANDARD ),

/*41*/      new ScenarioStep( "otevři Trezor",
             "Zatáhl(a) jste za vyrobenou kličku, čímž jste otevřel(a) Trezor." +
          "\n Vybral jste z trezoru sbírku odznaků. Jedná se o historické odznaky, které mají velkou cenu." +
          "\nÚspěšně jste dokončil(a) úkol. Hru ukončíte příkazem konec." +
        "\n\n Nacházíte se v místnosti: Pracovna" +
          "\n Můžete se přesunout do místností: Obývák" +
          "\n V místnosti se nachází: Stůl, PC, Obraz, Trezor" +
          "\n Máte v držení předměty: ",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] {  },
            tsNON_STANDARD ),

/*42*/      new ScenarioStep( "konec",
             "Tímto je hra u konce. Děkuji za strávený čas.",

            "Pracovna",
            new String[] { "Obývák" },
            new String[] { "Stůl", "PC", "Obraz", "Trezor" },
            new String[] {  },
            tsEND )
    };

    /***************************************************************************
     * Základní chybový scénář definující reakce
     * na povinnou sadu chybových stavů.
     */
    private static final ScenarioStep[] chybový =
    {
/*43*/      new ScenarioStep( "", //Název prvního příkazu musí být prázdný řetězec
             "Vítejte ve hře. Projděte celým domem a odneste si ten nejcennější suvenýr" +
          "\n Najděte v bytě trezor. Zde se vždy nachází nějaká cennost." +
        "\n\n Nyní se nacházíte na: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsSTART ),

/*44*/      new ScenarioStep( "přeskoč",
             "Tento příkaz neznám. " +
          "\n Chcete-li poradit, zadejte příkaz ?" +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsUNKNOWN ),

/*45*/      new ScenarioStep( "",
             "Zadal(a) jste prázdný příkaz." +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsEMPTY ),

/*46*/      new ScenarioStep( "jdi Kůlna",
             "Do zadané místnosti se odsud nedá přejít." +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsBAD_NEIGHBOR ),

/*47*/      new ScenarioStep( "vezmi Zahrada",
             "Zadaný předmět v místnosti není." +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsBAD_OBJECT ),

/*48*/      new ScenarioStep( "vezmi Plot",
             "Zadaný předmět nejde zvednout." +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsUNMOVABLE ),

/*49*/     new ScenarioStep( "polož Doklady",
             "Předmět není v kapse: Doklady" +
        "\n\n Nacházíte se v místnosti: Zahrada" +
          "\n Můžete se přesunout do: Garáž, Vchod" +
          "\n Na zahradě se nachází: Květiny, Plot" +
          "\n Máte v držení předměty:",

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsNOT_IN_BAG ),

/*50*/      new ScenarioStep("?",
        "\n Příkazy, které je možno v průběhu hry zadat:" +
         "\n============================================",
            //Text pokračuje vyjmenováním příkazů a jejich popisů
            //a končí standardním popisem aktuální situace

            "Zahrada",
            new String[] { "Garáž", "Vchod"},
            new String[] { "Květiny", "Plot" },
            new String[] {},
            tsHELP ),

/*51*/      new ScenarioStep( "jdi Garáž",
             "Přesunul(a) jste se do místnosti: Garáž" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do: Zahrada" +
          "\n V garáži se nachází: Noviny, Kleště, Šroubovák, Vrtačka" +
          "\n Máte v držení předměty:",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Kleště", "Šroubovák", "Vrtačka"},
            new String[] {},
            tsMOVE ),

/*52*/     new ScenarioStep( "vezmi Kleště",
             "Vzal(a) jste předmět: Kleště" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Noviny, Šroubovák, Vrtačka" +
          "\n Máte v držení předměty: Kleště",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Šroubovák", "Vrtačka"},
            new String[] { "Kleště" },
            tsPICK_UP ),

/*53*/    new ScenarioStep( "vezmi Šroubovák",
             "Vzal(a) jste předmět: Šroubovák" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Noviny, Vrtačka" +
          "\n Máte v držení předměty: Kleště, Šroubovák",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Noviny", "Vrtačka"},
            new String[] { "Kleště", "Šroubovák" },
            tsPICK_UP ),

/*54*/     new ScenarioStep( "vezmi Noviny",
             "Vzal(a) jste předmět: Noviny" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Vrtačka" +
          "\n Máte v držení předměty: Kleště, Šroubovák, Noviny",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Vrtačka"},
            new String[] { "Kleště", "Šroubovák", "Noviny" },
            tsPICK_UP ),
            
/*55*/     new ScenarioStep( "vezmi Vrtačka",
             "Zadaný předmět nelze zvednout - máte sice velké kapsy, ale tohle už se tam opravdu nevejde" +
        "\n\n Nacházíte se v místnosti: Garáž" +
          "\n Můžete se přesunout do místnosti: Zahrada" +
          "\n V garáži se nachází: Vrtačka" +
          "\n Máte v držení předměty: Kleště, Šroubovák, Noviny",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Vrtačka"},
            new String[] { "Kleště", "Šroubovák", "Noviny" },
            tsBAG_FULL ),

/*56*/     new ScenarioStep( "konec",
        "\n Tímto je hra u konce. Děkuji za strávený čas.",

            "Garáž",
            new String[] { "Zahrada" },
            new String[] { "Vrtačka"},
            new String[] { "Kleště", "Šroubovák", "Noviny" },
            tsEND ),
    };

        /***************************************************************************
     * Příkazy pro demonstrační scénář sloužící k analýze funkce
     * grafického uživatelského rozhraní.
     * Scénář má za úkol projít jeméně třemi místnostmi,
     * zvednout nejméně dva objekty a položit je v jiné místnosti,
     * než ve které je zvedal.
     * Příkazy pro demonstrační scénář neobsahuje úvodní prázdný příkaz,
     * ten si konstruktor scénáře doplní sám.
     */
    String[] demo = {"jdi garáž",
                     "vezmi kleště",
                     "vezmi šroubovák",
                     "jdi zahrada",
                     "jdi vchod",
                     "polož kleště",
                     "polož šroubovák",
                     "konec"
                    };

    /** Jediná instance této třídy. Spravuje všechny scénáře sdružené hry. */
    private static final SprávceScénářůL Scénář = new SprávceScénářůL();
    
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================
//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vrátí správce scénářů - jedinou instanci této třídy.
     *
     * @return Správce scénářů
     */
    public static SprávceScénářůL getInstance()
    {
        return Scénář;
    }

    /***************************************************************************
     * Vytvoří instanci představující správce scénářů hry.
     */
    private SprávceScénářůL()
    {
        super(autor, xname, TŘÍDA);
        přidejScénáře();
        seal();
    }

//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================
//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Přidá správci všechny vytvořené scénáře.
     */
   private void přidejScénáře()
    {
        addScenario("Základní", TypeOfScenario.scHAPPY, základní);
        addScenario("Chybový",  TypeOfScenario.scMISTAKES, chybový);
        addScenario("DemoForGUI",  demo );
        seal();
    }

//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTOVACÍ METODY A TŘÍDY ==================================================

//    /***************************************************************************
//     * .
//     */
//    public static void test()
//    {
//        ScenarioManagerTest test = new ScenarioManagerTest();
//        test.testuj(Scénář);
//    }
//
//    public static void test()
//    {
//        _TestSprávceScénářů test = new _TestSprávceScénářů();
//        test.testuj(Scénář);
//    }
//
//
//      /***************************************************************************
//     * Simulace průběhu hry podle základního úspěšného scénáře.
//     */
//    public static void simulujÚspěšný()
//    {
//        ScenarioStart .conciseSimulation (Scénář.getScenario(0));
//    }
//
//    public static void simulujÚspěšný()
//    {
//        _SpouštěníScénářů .conciseSimulation (Scénář.getScenario(0));
//    }
//
//    /***************************************************************************
//     * Simulace průběhu hry podle základního chybového scénáře.
//     */
//    public static void simulujChybový()
//    {
//        ScenarioStart .consiseSimulation (Scénář.getScenario(1));
//    }
//
//    public static void simulujChybový()
//    {
//        _SpouštěníScénářů.conciseSimulation (Scénář.getScenario(1));
//    }
//
//    /***************************************************************************
//     * Testování funkce hry prováděné postupně
//     * prostřednictvím všech scénářů daného správce
//     */
//    public static void prověrkyHry()
//    {
//        IGame hra = HraLupič.getHra();
//        ScenarioStart.proveďScénáře(hra);
//    }
//
//    public static void prověrkaHry()
//    {
//        IGame hra = HraLupič.getHra();
//        _SpouštěníScénářů.proveďScénáře(hra);
//    }

   /***************************************************************************
     * Základní test ověřující, jestli správce scénářů vyhovuje
     * zadným okrajovým podmínkám.
     */
    public static void testSprávceScénářů()
    {
        _Test_101 test = _Test_101.getInstance(Scénář);
        test.testScenarioManager();
    }


    /***************************************************************************
     * Testování funkce hry prováděné postupně
     * prostřednictvím všech scénářů daného správce
     */
    public static void prověrkaHry()
    {
        //IGame     hra  = HraLupič.getHra();
        IGame     hra  = Scénář.getGame();
        _Test_101 test = _Test_101.getInstance(hra);
        test.testGame();
    }


    /***************************************************************************
     * Test ověřujícífunkci textové verze hry.
     */
    public static void testTXT()
    {
        //IGame     hra  = HraLupič.getHra();
        IGame     hra  = Scénář.getGame();
        _Test_101 test = _Test_101.getInstance(hra);
        test.playGameByScenario(INDEX_GUI_TEST);
    }


    /***************************************************************************
     * Test demonstrující hraní hry na daném GUI.
     */
    public static void testGUI()
    {
        //IGameG    hra  = HraLupič.getHra();
        IGameG     hra  = (IGameG)Scénář.getGame();
        _Test_115 test = _Test_115.getInstance(hra);
        test.playGameByScenario(INDEX_GUI_TEST);
    }
    
    /** @param args Parametry příkazového řádku - nepoužívané. */
    public static void main( String[] args )
    {
//        test();
//        simulujÚspěšný();
//        simulujChybový();
//        testSprávceScénářů();
        testTXT();
//        testGUI();
//        prověrkaHry();
    }
}
